約 4,308,569 件
https://w.atwiki.jp/dtmer/pages/172.html
timidityの設定ファイル。中身はテキストファイルである。 この設定ファイルには文法があり、正しく書かれていないと エラーが表示され、音声が再生できない。 cfgの編集方法 setwindrvを使用する timidityのtwsynthインストーラ版に付属するcfg編集ソフト。 詳細は添付されている説明書を参照のこと。 createcfgを使用する 有志が作ったcfg設定作成ソフト。 バージョンによって操作方法が異なる。 詳細は添付されている説明書を参照のこと。 メモ帳で直接編集する テキストファイルであるため、OS付属のテキストエディタでも創ることができる。 最も簡単に編集するには空ファイルを創り、起動しているエディタに直接 ドラッグ&ドロップする方法がある。 とりあえず、音源を読み込んで再生するにはtimidity.cfgに dir サウンドフォントのあるディレクトリ soundfont 再生するサウンドフォント を書くと再生するサウンドフォントで再生することができる。 或いは別にcfgファイルがある場合には soundfontをsourceにすることでその設定が読み込まれる。 参考 TiMidity++ 設定ファイル詳解 TiMidity++だけを語り尽くすスレ@Wiki TiMidity++ オプション詳解
https://w.atwiki.jp/dtmer/pages/13.html
DTMを手軽にはじめてみよう! 曲を聴くだけなら、基本的にパソコンがあればすぐにできます。(何故なら、必要なものは大抵初めから揃っている事が 多いからです) しかし、下記のような知識やツールを利用すると、そのままDTMを創めることができるようになります! (そして、これらはネット上で無償で手に入れることができます) 注意:この項目はあくまでDTMのソフトの使用者が紹介・解説・アドバイスをするページであり、サポートページではありません。 ソフトの不良の報告・苦情等は、各ソフトの本家サイト様におねがいしますmm また、ページに対する報告・苦情等は掲示板でお願いしますmm DTMソフト解説編 MIDIデータ作成(シーケンサー) ピアノロール表記 ミノ式 cherry Domino Music Studio Producer Linux MultiMedia Studio 譜面表記 Studio ftn Score Editer Free MIDIデバイス MIDI音源 MicroSoft GS Wavetable SW Synth Microsoft Synthesizer YAMAHA XG WDM SoftSynthesizer TiMidity++ その他のデバイス YAMAHA Virtual MIDI Device MIDIYoke Maple Virtual MIDI Cable Virtual MIDI Cable MIDIプレーヤー 音源付属型 MidRadioPlayer QuickTimePlayer TiMidity++ デバイス切り替え型 TMIDIPlayer KbMediaPlayer ソフトウェア・シンセサイザー VSTHost SynthEdit 各種VSTプラグイン ソフトウェアFM音源MIDIプレーヤー 1.8 音源・素材 各種SoundFont 音声編集ソフト SoundEngine Free RadioLine Free Audacity 変換ソフト・コーデック Windows Media Player 午後のコ~ダ RealPlayer WinAmp iTunes LAME FLAC Audioデバイス TiVSound Wave Virtual Audio Mixer 動画ソフト解説編
https://w.atwiki.jp/vst_prog/pages/77.html
トップページ MIDIメッセージをホストアプリケーションから受け取る関数 MIDIメッセージをホストアプリケーションから受け取るにはprocessEvents()関数を利用する。 processEvents()関数 VstInt32 processEvents (VstEvents* events) 戻り値と引数については以下のとおりである。 戻り値(型) 説明 VstInt32 戻り値についてはホストアプリケーションで無視される。ただし、念のため1を返すようにするとよい。 引数 説明 VstEvents* events イベントを保持しているVstEvents型変数(後述)へのポインタ processEvents()関数はMIDIメッセージだけを受け取る関数ではなく、VSTに関するホストアプリケーションからのイベントをすべて受け取る関数となっている。 ただし、実装されているメッセージは現在(2010年11月)のところMIDIに関する以下の2つだけである。 MIDIメッセージ MIDI System Exclusiveメッセージ processEvents()関数との関係 ホストアプリケーションはprocessReplacing()関数を呼び出す前に必ず1度だけprocessEvents()関数呼び出し、イベントをVSTに通知する。 また、processEvents()関数で渡されるイベントは直後に呼び出すprocessReplacing()関数に関連するイベントのみとなっている。 ホストアプリケーション側の処理のイメージとしては以下のような感じである。 【ホストアプリケーションの動作】 ①processEvents()関数呼び出し ↓ ②processReplacing()関数呼び出し ↓ ③いろいろ処理 ↓ ④processEvents()関数呼び出し ↓ ⑤processReplacing()関数呼び出し ↓ ⑥いろいろ処理 ↓ ⑦processEvents()関数呼び出し ↓ ⑧processReplacing()関数呼び出し ↓ : : ホストアプリケーションは①でprocessEvents()関数を呼び出した際に、②processReplacing()関数に関連するイベントのみをVSTに渡す。 (ホストアプリケーションは②に無関係のイベント(⑤や⑧に関連するイベント)については渡してはいけない。) サンプルコード processEvents()関数でMIDIメッセージを保存するサンプルコードは以下のとおり。 VstInt32 MyMidiSampleVST processEvents (VstEvents* events){// MIDIのリストを初期化します。midimsgnum = 0;memset(midimsgbuf, 0, sizeof(MidiMessage) * MIDIMSG_MAXNUM); // VSTイベントの回数だけループをまわす。int loops = (events- numEvents);for (int i = 0;i loops; i++){// 与えられたイベントがMIDIならばmidimsgbufにストックするif ((events- events[i])- type == kVstMidiType){VstMidiEvent *midievent = (VstMidiEvent*)(events- events[i]); midimsgbuf[midimsgnum].deltaFrames = midievent- deltaFrames;midimsgbuf[midimsgnum].message = midievent- midiData[0] 0xF0; // MIDIメッセージmidimsgbuf[midimsgnum].channel = midievent- midiData[0] 0x0F; // MIDIチャンネルmidimsgbuf[midimsgnum].data1 = midievent- midiData[1]; // MIDIデータ1midimsgbuf[midimsgnum].data2 = midievent- midiData[2]; // MIDIデータ2midimsgnum++; // MIDIメッセージのバッファがいっぱいの場合はループを打ち切る。if (i = MIDIMSG_MAXNUM){break;}}} // 1を返しておくreturn 1;} サンプルコードの解説 まず引数のVstEvents構造体は以下のように定義されている。 変数 型 説明 numEvents VstInt32 VSTイベントの数。 reserved VstIntPtr 使われていない変数。0で固定 events [2] VstEvent * VSTイベントへのポインタ。numEvents分だけVSTイベントが格納されている。 ホストアプリケーションからのVSTイベント自体は上記のVstEvents構造体のVstEvent * events[]に格納されている。 VstEvent構造体は以下のように定義されている。 変数 型 説明 type VstInt32 VSTイベントのタイプ。実装されているタイプは以下の2つのみ。kVstMidiType…data[ ]に保存されているデータがMIDIメッセージであることを示すkVstSysExType…data[ ]に保存されているデータがMIDI System Exclusiveメッセージであることを示す byteSize VstInt32 VstEvent構造体のtypeとbyteSizeを除いたバイト数。24固定。 deltaFrames VstInt32 processReplacing()関数内でMIDIメッセージの処理タイミング。0~sampleFramesの範囲の値を持つ。 flags VstInt32 使われていない変数。 data[16] char 実際のVSTイベントデータ。typeよって内容が変わる。 サンプルコードでは、最初にMIDIメッセージを保存するバッファを初期化している。(3~5行目) midimsgnum = 0; memset(midimsgbuf, 0, sizeof(MidiMessage) * MIDIMSG_MAXNUM); 次にVSTイベントの数だけ処理するループを作成している。(8~29行目) // VSTイベントの回数だけループをまわす。 int loops = (events- numEvents); for (int i = 0;i loops; i++) { : : } ループの中で与えられたVSTイベントがMIDIメッセージか確認し、MIDIメッセージならばバッファに保存する(12~28行目) バッファに保存する際、VstEvent構造体のままでは扱いにくいため、VstMidiEvent構造体(後述)に型変換している。 if ((events- events[i])- type == kVstMidiType) { VstMidiEvent *midievent = (VstMidiEvent*)(events- events[i]); midimsgbuf[midimsgnum].deltaFrames = midievent- deltaFrames; midimsgbuf[midimsgnum].message = midievent- midiData[0] 0xF0; // MIDIメッセージ midimsgbuf[midimsgnum].channel = midievent- midiData[0] 0x0F; // MIDIチャンネル midimsgbuf[midimsgnum].data1 = midievent- midiData[1]; // MIDIデータ1 midimsgbuf[midimsgnum].data2 = midievent- midiData[2]; // MIDIデータ2 midimsgnum++; } VstMidiEvent構造体については以下のように定義されている。 変数 型 説明 type VstInt32 VstEvent構造体と同じ。 byteSize VstInt32 VstEvent構造体と同じ。 deltaFrames VstInt32 VstEvent構造体と同じ。 flags VstInt32 使われていない変数。 noteLength VstInt32 用途不明 noteOffset VstInt32 用途不明 midiData [4] char MIDIメッセージ。midiData[0]…MIDIステータス(メッセージ)とMIDIチャンネルが入っている。midiData[1]…MIDIメッセージのデータ1midiData[2]…MIDIメッセージのデータ2midiData[3]…将来的な拡張のため予約。0が入っている。 detune char 用途不明。-64~+63の値が入っている。 noteOffVelocity char 用途不明。0~127の値が入っている。 reserved1 char 将来的な拡張のため予約。0が入っている reserved2 char 将来的な拡張のため予約。0が入っている 次へ 同一カテゴリのTips 項目 No. 概要 MIDIメッセージ処理 No.1 MIDIメッセージ処理で最小構成の自作VSTに追加する変数・関数 No.2 VSTの初期化とMIDIメッセージ処理関連の変数の初期化 No.3 ホストアプリケーションからMIDIメッセージを受け取る方法 No.4 MIDIメッセージをprocessReplacing()関数中で処理する方法 No.5 MIDIメッセージ処理で作成したVSTのサンプルソースコード全体(暫定版)
https://w.atwiki.jp/itoukunn/pages/19.html
アップグレードパーツの最大ステージを装着した場合の馬力情報を作ってみました。 車種によって装着できないパーツや、最大ステージの詳細情報を求めてます。 ペコリ(o_ _)o)) 最大馬力は純粋に一覧のパーツを全て足した合計で表記しています。 各車両で太文字で確定とみなした最大馬力以上の車種を見かけた方は詳細情報とあわせてご報告ください。合計バグや搭載バグで一般の方が同じ最大馬力にならない場合があります。バグの最大馬力値をまとめてもねぇ。。なのでバグと思われる最大馬力の報告は混乱の元となるので控えてください(*´・ω-)bネッ! 詳細スペックやSSなどは一般コミュの「スピードレーシング!!」(管理人:イサさん) にて「みんなの愛車は何馬力?」トピがありますのでアップしていただけると幸いです。 No 車種 初期馬力 (付加パーツ無し) 合計 (付加パーツ有り) 合計 1 2 3 4 5 6 7 8 9 10 小計 1 2 3 4 5 6 7 8 9 10 小計 1 Chevy Aveo 115 15 20 20 90 30 35 40 140 25 15 430 545 3 4 4 3 5 8 13 15 50 35 140 685 2 Honda Civic 130 30 40 40 180 60 70 80 280 50 30 860 990 3 4 7 3 5 8 25 30 50 35 170 1,160 3 VW Beetle 150 30 40 40 180 60 70 80 280 50 30 860 1,010 3 4 7 3 5 8 25 30 50 35 170 1,180 4 Mini Cooper 225 38 50 50 225 75 88 100 350 63 38 1077 1,302 3 4 9 3 5 8 32 50 35 149 1,417 5 Ford Mustang 250 45 60 60 270 90 105 120 420 75 45 1290 1,540 3 4 11 3 5 8 38 45 50 35 202 1,742 6 Chevy Camaro 426 45 60 60 270 90 105 120 420 75 45 1290 1,716 3 4 11 3 5 8 38 45 50 35 202 1,918 7 Mazda RX8 238 38 50 50 225 75 88 100 350 63 38 1077 1,315 3 4 9 3 5 8 32 50 35 149 8 Lancer Evo 290 45 60 60 270 90 105 120 420 75 45 1290 1,580 3 4 11 3 5 8 38 45 50 35 202 1,782 9 Subaru Impreza 305 45 60 60 270 90 105 120 420 75 45 1290 1,595 3 4 11 3 5 8 38 45 50 35 202 1,797 10 Hummer H3 239 23 30 30 135 45 53 60 210 38 23 647 886 3 4 6 3 5 8 19 23 50 35 156 1,042 11 Toyota Supra 320 38 50 50 225 75 88 100 350 63 38 1077 1,397 3 4 9 3 5 8 32 50 35 149 1,458 12 BMW Z4 300 38 50 50 225 75 88 100 350 63 38 1077 1,377 3 4 9 3 5 8 32 50 35 149 1,526 13 Lotus Elise 330 30 40 40 180 60 70 80 280 50 30 860 1,190 3 4 7 3 5 8 25 30 50 35 170 1,360 14 Audi TT 268 38 50 50 225 75 88 100 350 63 38 1077 1,345 3 4 9 3 5 8 32 50 35 149 15 BMW M3 350 30 40 40 180 60 70 80 280 50 30 860 1,210 3 4 7 3 5 8 25 30 50 35 170 1,380 16 Cadillac Escalade 325 23 30 30 135 45 53 60 210 38 23 647 972 3 4 6 3 5 8 19 23 50 35 156 1,128 17 Acura NSX 350 45 60 60 270 90 105 120 420 75 45 1290 1,640 3 4 11 3 5 8 38 45 50 35 202 1,842 18 Mercedes SLK 375 45 60 60 270 90 105 120 420 75 45 1290 1,665 3 4 11 3 5 8 38 45 50 35 202 1,867 19 Dodge Viper 400 30 40 40 180 60 70 80 280 50 30 860 1,260 3 4 7 3 5 8 25 30 50 35 170 1,430 20 Corvette Z06 425 30 40 40 180 60 70 80 280 50 30 860 1,285 3 4 7 3 5 8 25 30 50 35 170 1,455 21 Audi R8 425 30 40 40 180 60 70 80 280 50 30 860 1,285 3 4 7 3 5 8 25 30 50 35 170 1,455 22 Maserati GranTurismo 430 30 40 40 180 60 70 80 280 50 30 860 1,290 3 4 7 3 5 8 25 30 50 35 170 1,460 23 Porsche 911 450 30 40 40 180 60 70 80 280 50 30 860 1,310 3 4 7 3 5 8 25 30 50 35 170 1,480 24 Aston Martin DB9 470 30 40 40 180 60 70 80 280 50 30 860 1,330 3 4 7 3 5 8 25 30 50 35 170 1,500 25 Ferrari F430 490 23 30 30 135 45 53 60 210 38 23 647 1,137 3 4 6 3 5 8 19 23 50 35 156 1,293 26 Lamborghini Gallardo 520 23 30 30 135 45 53 60 210 38 23 647 1,167 3 4 6 3 5 8 19 23 50 35 156 1,323 27 Carrera GT 612 23 30 30 135 45 53 60 210 38 23 647 1,259 3 4 6 3 5 8 19 23 50 35 156 1,415 28 Koenigsegg 655 23 30 30 400 45 53 60 450 38 23 1152 1,807 3 4 6 3 5 8 19 23 50 35 156 1,963 29 Enzo Ferrari 670 23 30 30 400 45 53 60 450 38 23 1152 1,822 3 4 6 3 5 8 19 23 50 35 156 1,978 30 Pagani Zonda 678 23 30 30 400 45 53 60 450 38 23 1152 1,830 3 4 6 3 5 8 19 23 50 35 156 1,986 31 McLaren F1 680 23 30 30 400 45 53 60 450 38 23 1152 1,832 3 4 6 3 5 8 19 23 50 35 156 1,988 32 Lamborghini Reventon 650 23 30 30 400 45 53 60 450 38 23 1152 1,802 3 4 6 3 5 8 19 23 50 35 156 1,958 33 Bugatti Veyron 1,001 15 20 20 400 30 35 40 450 25 15 1050 2,051 3 4 4 3 5 8 13 15 50 35 140 2,191 購入に条件がある車 No 車種 初期馬力 (付加パーツ無し) 合計 (付加パーツ有り) 合計 1 2 3 4 5 6 7 8 9 10 小計 1 2 3 4 5 6 7 8 9 10 小計 34 Beetle Convertible 150 30 40 40 180 60 70 80 280 50 30 860 1,010 3 4 7 3 5 8 25 30 50 35 170 1,180 35 Dodge Challenger 390 30 40 40 180 60 70 80 280 50 30 860 1,250 3 4 7 3 5 8 25 30 50 35 170 1,420 36 Corvette ZR1 638 45 60 60 270 90 105 120 420 75 45 1290 1,928 3 4 11 3 5 8 38 45 50 35 202 2,130 37 Alfa Romeo 8C 444 30 40 40 180 60 70 80 280 50 30 860 1,304 3 4 7 3 5 8 25 30 50 35 170 1,474 追加 Spyker C8 400 38 50 50 225 75 88 100 350 63 38 1,077 1,477 10 11 9 11 14 8 32 38 50 35 218 1,695 アクセス数(合計): - アクセス数(今日): - アクセス数(昨日): - 情報が混乱しているので、とりあえず箱を作ってみました。 -- Nanpu (2009-10-18 21 37 54) Toyota Supra トータル馬力: 1546 -- 名無しさん (2009-10-29 17 32 48) ↑Toyota Supraの付加パーツ8が38ってことですか? -- Nanpu (2009-10-29 18 29 58) カマロで2167馬力を見ました。 -- カメ (2009-10-30 14 15 30) Chevy Camaro で2182がマイミクにいました・・ -- もふ (2009-11-01 13 14 24) 合計バグの最大値だと思うのですが・・・ -- Nanpu (2009-11-01 13 40 16) 付加パーツってステージ3ぐらいまであげれるんですね・・・ -- @@@ (2009-11-01 21 03 20) 各車別にチューンアップ情報を作成中です。ステージの最大数などわからないことが多いので各ページにコメントよろしくお願いいたします。 -- Nanpu (2009-11-02 13 21 52) マイミクで、Chevy Camaroのトータル馬力が2205の人がいます! -- 名無しさん (2009-11-02 22 11 55) Veyronフルチューンで1400ちょいにしかならなかった。 -- 名無しさん (2009-11-12 15 53 05) ↑ステージ4考えてなかったスマソ -- 名無しさん (2009-11-12 15 56 23) McLaren F1の最大馬力 1943ps を確認しました。 -- Barancourl (2009-11-18 01 05 57) ↑詳細データを出してください。 -- Nanpu (2009-11-18 06 29 02) データーというほどのモノは・・・ 表の1937Hpは、全ての付加パーツを装着した数字ではないと思われ(自分がそうですので) 後からはじめたマイミクさんのMcLaren F1(早い時点でMcLaren F1に乗られていました)が1943Hpを表示してましたので・・・ -- Barancourl (2009-11-19 01 34 34) 本日、同マイミクさんのMcLaren F1の馬力1993Hpになってました・・・ -- Barancourl (2009-11-19 03 43 28) ↑全ての付加パーツを装着した合計が1937HPです。詳細データの裏づけが無い最大値情報の報告はしなくて良いですよ。 -- Nanpu (2009-11-19 18 08 06) 一般コミュの「スピードレーシング!!」にて、「みんなの愛車は何馬力?」トピにでも詳細データをupして頂きます様お願いいたします。 -- Nanpu (2009-11-19 18 18 04) McLaren F1の付加パーツ情報が間違っていた為、修正いたしました。 -- Nanpu (2009-11-23 12 35 00) コルベットZR-1ノーマルフルチューンで1928馬力 -- ZR-1 (2009-11-24 19 26 31) 情報追加しました。 たぶんMAX2,095HPだろうな。。 -- Nanpu (2009-11-24 20 33 04) 7ブレーキグレード3で38PS -- ZR-1 (2009-11-29 12 26 06) やはりw 付加パーツ計167のパターンですね (*^-^)ニコ -- Nanpu (2009-11-29 12 48 37) 通常チューンアップのパーツ1で付加パーツのパターンが決まっているようなので該当範囲を埋めておきます。 -- Nanpu (2009-11-29 12 53 39) 4.Mini Cooper もしくは 10.Toyota Supra にて、付加パーツ8のCold Air Intakeを装着した方いらっしゃいませんか? -- Nanpu (2009-11-29 12 56 52) Z4最大馬力 1377hp -- やっ (2009-12-01 23 00 46) お初ですSupra追加パーツ8は・・・Cold Air Intake 3 (38 hp)です。 -- hiiro (2010-01-02 09 06 44) ついでに、追加パーツ1着けてない(2~9は装着)Supraのトータル馬力: 1546HPです。 -- hiiro (2010-01-02 09 54 33) インドを制覇しました。インドでの付加パーツは、HID Conversion Stage 1~3です。1は0で2HP、Stage2は600000で4HP、Stage3は750000で6HP(トータル)馬力がアップしました。私のブガッティは今までの付加パーツを足しているので、トータル馬力は2197HPになりました。参考にしてください。 -- ヒカル☆@予知夢 (2010-02-20 14 06 26) 車種: Ultimate Aero トータル馬力: 2223 -- 名無しさん (2010-02-27 21 35 46) ヒカル☆@予知夢さん>私のブガッティは今までの付加パーツ一切無しでフルチューンで2200HPですよ。それに今までのすべての付加パーツは後でどの車にも買えるようになりましたから。 -- 名無しさん (2010-03-01 06 41 35) Saleen S7 チューンのパターンはF1ya -- 名無しさん (2010-03-07 13 36 36) ↑ミスった。Saleen S7 チューンのパターンはF1やReventonと同じ模様。 -- 名無しさん (2010-03-07 13 37 10) Bugatti Veyronトータル馬力:2229※Ultimate Aero トータル馬力:2252!!!やったぁ! -- 名無しさん (2010-03-10 14 30 48) また付加パーツがアップグレードできるようになってる。イギリスまでの全部付けてBugatti Veyronトータル馬力:2288 -- 通りすがり (2010-04-21 17 25 24) 【トルコ】パーツ付加 車種: Ultimate Aero トータル馬力: 2331 -- 名無しさん (2010-04-23 16 44 26) Ultimate Aeroトータル馬力: 2340を確認 -- 名無しさん (2010-05-14 18 52 55) 車種: Zenvo ST1 トータル馬力: 1791 トータルしょぼい、しょぼすぎ… -- 名無しさん (2010-05-15 02 10 16) 南アフリカ終了時点、Ultimate Aero トータル馬力: 2381 -- 名無しさん (2010-05-15 10 54 22) 南アフリカ終了時点、Bugatti Veyron トータル馬力: 2358 -- 名無しさん (2010-05-15 10 55 05) 南アフリカ終了時点、Toyota Prius トータル馬力:1782 -- 名無しさん (2010-06-02 14 31 27) ↑のトータル馬力 1782ではなく1783でした -- 名無しさん (2010-06-03 00 54 00) UAE終了時、Ford GT Limited トータル馬力:2168 -- 名無し (2010-06-11 10 24 30) フランス終了時点、Ultimate Aero トータル馬力: 2392 -- 名無しさん (2010-06-25 21 42 32) 付加パーツ無しでScion tCをフルチューン、トータル馬力は1021. -- 名無しさん (2010-06-27 20 39 59) Enzo Ferrari ALLステージ2以上でトータル馬力1275・・・、色んなバグがあるものだ1500すら行く見込みがない -- 名無しさん (2010-07-22 21 43 02) 現在LV71でtoyota prius 1685PSです。 -- まきた (2010-08-24 12 15 15) ノルウェー終了時フルチューンの最大馬力、Bugatti Veyron2410HP, -- 名無しさん (2010-08-25 14 56 39) ノルウェー終了時フルチューンの最大馬力、Ultimate Aero2433HP -- 名無しさん (2010-08-25 14 57 39) Spyker C8 売却時の価格: 899,200 コイン トータル馬力:2,767 -- 名無しさん (2010-10-05 14 37 59) Spyker C8の最大馬力2,767!?まぢで!? -- 名無しさん (2010-10-05 18 32 04) Spyker C8をRoll Over Bar Stage 3までチューンしたところトータル馬力は1856になりました。↑↑バグ? -- 名無しさん (2010-10-06 11 49 54) Spyker C8 トータル馬力: 3333 確認! -- 名無しさん (2010-10-25 17 25 48) ↑↑バグでしょうねえ。AVRO二回チューン出来たなんて報告もサポートスレに上がってるし。 -- 名無しさん (2010-10-26 15 38 45) スペイン終了フルチューン、Bugatti Veyron2463HP -- 名無しさん (2010-10-29 00 34 32) トルコ完走時点フルチューンSpyker C8、2281馬力 -- 名無しさん (2010-10-29 00 40 48) 車種: Toyota Supra トータル馬力: 1653 -- 名無しさん (2010-11-07 03 46 13) マイミクさんのChevy Aveo馬力が2832HP!バグ? -- 名無しさん (2010-11-16 04 58 31) Saleen S7 英国終了時点で付加付きフルチューンで2362HP、最終的には2499HPです。 -- こーちゃん (2010-11-30 10 49 58) Bristol Fighter・初期1012HPですが標準フルチューン(ステージ3)で1432HPでした -- 名無しさん (2010-12-01 16 37 16) Bristol Fighter 付加の合計356HPを加えても1788HPまで…デザインが好きなだけに残念。 -- こーちゃん (2010-12-01 16 40 03) Bugatti Veyron GrandSportは、すごいお金を投入した割には、フルチューンで1802HPでした。 -- PECKER (2010-12-08 01 25 46) Bugatti Veyronで2228です -- うぇ (2011-06-20 00 18 28) 名前 コメント 合計バグや搭載バグの最大値報告はいりません。最大馬力と違う値は詳細データを必ず確認してから報告してください。 ▲ページトップに戻る
https://w.atwiki.jp/nicoratch/pages/1374.html
概要 MIDI MIXの主な特長 ほとんどのDAWをコントロール可能なMIDIミキサー 8本のチャンネルフェーダーと1本のマスターフェーダー 各チャンネルに3、計24のコントロールノブ 計16のソロ/ミュートボタンとレコードアームボタン ミキサー情報を一括してDAWに送信可能なSEND ALLボタン Ableton Live用プリマッピング(Ableton Live Lite付属・ダウンロード) 専用エディターソフトウエア付属(ダウンロード) スペック表 仕様 ノブ:24(270°回転アサイナブル・ノブ)BANK LEFT/RIGHTボタンによるバンク切り替え フェーダー:8(30mmアサイナブル・フェーダー)、1(30mmアサイナブル・マスターフェーダー)、BANK LEFT/RIGHTボタンによるバンク切り替え アサイナブル・ボタン:8(アサイナブル・ミュートボタン、バックライト色:アンバ、ソロ機能つき)、1(アサイナブル・ソロボタン、ミュートボタン切り替え用)、8(アサイナブル・レコードアームボタン、バックライト色:レッド)、2(アサイナブル・バンクボタン、LEFT/RIGHT)、1(SEND ALLボタン) 端子:USB端子 x 1、Kensingtonロック 電源:USBバスパワー サイズ(W × D × H):約23.9cm x 20.1cm x 3.0cm 重量:約0.7kg Macシステム要件(MIDI MIX本体):1.25GHz G4/G5以上(Intel Mac推奨)、1GB RAM(2GB以上推奨)、Mac OS X 10.4.11(10.5以上推奨)、USB端子 Windowsシステム要件(MIDI MIX本体):1.5GHz Pentium 4およびCeleron互換以上(マルチコアCPU推奨)、1GB RAM(2GB以上推奨)、Windows XP以上、Winodows互換サウンドカード(ASIO対応推奨)、QuickTime、USB端子 ※ システム要件は、MIDI MIX本体のもので、付属ソフトウエアに対するものではありません。 ※ 仕様は断りなく変更される場合がございます。 価格 ¥8,800(税抜) MIDI MIX http //akai-pro.jp/midimix/
https://w.atwiki.jp/yanprog/pages/25.html
最大流 次を貼り付ける。 add_edge(s,t,v)でsからtへ容量vの辺を追加する。 max_flow(s,t)でsからtへの最大流。 ll INF=1LL 62-1; double eps=1e-20; template typename T struct cal_max_flow{ static const int MAX_V=5010; struct edge{ int to; T cap; int rev; }; vector edge G[MAX_V]; int level[MAX_V]; int iter[MAX_V]; void add_edge(int from,int to,T cap){ G[from].pb((edge){to,cap,G[to].size()}); G[to].pb((edge){from,0,G[from].size()-1}); } void bfs(int s){ nclr(level); queue int que; level[s]=0; que.push(s); while(!que.empty()){ int v=que.front(); que.pop(); for(int i=0;i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[e.to] 0){ level[e.to]=level[v]+1; que.push(e.to); } } } } T dfs(int v, int t, T f){ if(v==t){ return f; } for(int i=iter[v];i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[v] level[e.to]){ T d=dfs(e.to, t, min(f,e.cap)); if(d eps){ e.cap-=d; G[e.to][e.rev].cap+=d; return d; } } } return 0; } T max_flow(int s,int t){ T flow=0; while(true){ clr(iter); bfs(s); if(level[t] 0)return flow; T f; while( (f=dfs(s,t,INF)) eps){ flow+=f; } } return flow; } }; 使用例1 SRM542 Div1HARD(Rabbit Working) #include cstdio #include cstdlib #include cmath #include climits #include cfloat #include map #include utility #include set #include iostream #include memory #include string #include vector #include algorithm #include functional #include sstream #include complex #include stack #include queue #include cstring #include assert.h #define FOR(i,a,b) for(int i=(a);i (b);++i) #define REP(i,n) FOR(i,0,n) #define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i) #define EXIST(s,e) ((s).find(e)!=(s).end()) #define ALL(s) (s).begin(),(s).end #define clr(a) memset((a),0,sizeof(a)) #define nclr(a) memset((a),-1,sizeof(a)) #define pb push_back #define INRANGE(x,s,e) ((s) =(x) (x) (e)) #define MP(a,b) make_pair((a),(b)) using namespace std; // BEGIN CUT HERE #define debug(x) cerr #x " = " (x) " (L" __LINE__ ")" " " __FILE__ endl; #define deb(x) cerr #x " = " (x) " , "; #define debl cerr " (L" __LINE__ ")" endl; template typename T std ostream operator (std ostream os, const vector T z){ os "[ ";REP(i,z.size())os z[i] ", " ;return ( os "]" endl);} template typename T std ostream operator (std ostream os, const set T z){ os "set( "; EACH(p,z)os (*p) ", " ;return ( os ")" endl);} template typename T,typename U std ostream operator (std ostream os, const map T,U z){ os "{ "; EACH(p,z)os (p- first) " " (p- second) ", " ;return ( os "}" endl);} template typename T,typename U std ostream operator (std ostream os, const pair T,U z){ return ( os "(" z.first ", " z.second ",)" );} // END CUT HERE typedef long long ll; typedef pair int,int pii; typedef pair long long, long long pll; typedef vector int vi; typedef vector vector int vvi; typedef vector long long vl; typedef vector vector long long vvl; typedef vector double vd; typedef vector vector double vvd; typedef vector string vs; ll INF=1LL 62-1; double eps=1e-20; template typename T struct cal_max_flow{ static const int MAX_V=5010; struct edge{ int to; T cap; int rev; }; vector edge G[MAX_V]; int level[MAX_V]; int iter[MAX_V]; void add_edge(int from,int to,T cap){ G[from].pb((edge){to,cap,G[to].size()}); G[to].pb((edge){from,0,G[from].size()-1}); } void bfs(int s){ nclr(level); queue int que; level[s]=0; que.push(s); while(!que.empty()){ int v=que.front(); que.pop(); for(int i=0;i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[e.to] 0){ level[e.to]=level[v]+1; que.push(e.to); } } } } T dfs(int v, int t, T f){ if(v==t){ return f; } for(int i=iter[v];i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[v] level[e.to]){ T d=dfs(e.to, t, min(f,e.cap)); if(d eps){ e.cap-=d; G[e.to][e.rev].cap+=d; return d; } } } return 0; } T max_flow(int s,int t){ T flow=0; while(true){ clr(iter); bfs(s); if(level[t] 0)return flow; T f; while( (f=dfs(s,t,INF)) eps){ flow+=f; } } return flow; } }; int N; vvi p; bool ok(double d){ cal_max_flow double cmf; int s=N+N*N; int t=s+1; REP(i,N){ cmf.add_edge(s,i,200*d); } double tot=0.0; REP(i,N) REP(j,N){ if(i j)continue; int v=N+i*N+j; cmf.add_edge(i,v,INF); cmf.add_edge(j,v,INF); double g=p[i][j]+(i==j ? d 2*d); //debug(g); cmf.add_edge(v,t,g); tot+=g; } double f=cmf.max_flow(s,t); return f+eps tot; } class RabbitWorking { public double getMaximum(vector string profit) { N=profit.size(); p=vvi(N,vi(N)); REP(i,N) REP(j,N) p[i][j]=profit[i][j]- 0 ; double ans=0.0; double d=1.0; while(ok(d)){ d*=2; } while(d eps){ if(ok(ans+d))ans+=d; d/=2; } return ans; } }; 使用例2(最小カットを具体的に求めたい場合は、level[v]が-1かどうか調べる。) graph cut at fuka5 #include cstdio #include cstdlib #include cmath #include climits #include cfloat #include map #include utility #include set #include iostream #include memory #include string #include vector #include algorithm #include functional #include sstream #include complex #include stack #include queue #include cstring #include assert.h #include sys/time.h #include fstream #define FOR(i,a,b) for(int i=(a);i (b);++i) #define REP(i,n) FOR(i,0,n) #define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i) #define EXIST(s,e) ((s).find(e)!=(s).end()) #define dump(x) cerr #x " = " (x) endl; #define debug(x) cerr #x " = " (x) " (L" __LINE__ ")" " " __FILE__ endl; #define deb(x) cerr #x " = " (x) " , "; #define debl cerr " (L" __LINE__ ")" endl; #define clr(a) memset((a),0,sizeof(a)) #define nclr(a) memset((a),-1,sizeof(a)) #define pb push_back #define INRANGE(x,s,e) ((s) =(x) (x) (e)) double pi=3.14159265358979323846; using namespace std; static const double EPS = 1e-5; typedef long long ll; typedef pair int,int pii; typedef vector int vi; typedef vector vi vvi; typedef vector ll vl; typedef vector vl vvl; typedef vector double vd; typedef vector vd vvd; typedef vector string vs; template typename T std ostream operator (std ostream os, const vector T z){ os "[ "; REP(i,z.size())os z[i] ", " ; return ( os "]" endl); } template typename T std ostream operator (std ostream os, const set T z){ os "set( "; EACH(p,z)os (*p) ", " ; return ( os ")" endl); } template typename T,typename U std ostream operator (std ostream os, const map T,U z){ os "{ "; EACH(p,z)os (p- first) " " (p- second) ", " ; return ( os "}" endl); } template typename T,typename U std ostream operator (std ostream os, const pair T,U z){ return ( os "(" z.first ", " z.second ",)" ); } double get_time(){ struct timeval tv; gettimeofday( tv, NULL); return tv.tv_sec + tv.tv_usec*1e-6; } ll INF=1LL 62-1; double eps=1e-20; template typename T struct cal_max_flow{ static const int MAX_V=5010; struct edge{ int to; T cap; int rev; }; vector edge G[MAX_V]; int level[MAX_V]; int iter[MAX_V]; void add_edge(int from,int to,T cap){ G[from].pb((edge){to,cap,G[to].size()}); G[to].pb((edge){from,0,G[from].size()-1}); } void bfs(int s){ nclr(level); queue int que; level[s]=0; que.push(s); while(!que.empty()){ int v=que.front(); que.pop(); for(int i=0;i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[e.to] 0){ level[e.to]=level[v]+1; que.push(e.to); } } } } T dfs(int v, int t, T f){ if(v==t){ return f; } for(int i=iter[v];i G[v].size();i++){ edge e=G[v][i]; if(e.cap eps level[v] level[e.to]){ T d=dfs(e.to, t, min(f,e.cap)); if(d eps){ e.cap-=d; G[e.to][e.rev].cap+=d; return d; } } } return 0; } T max_flow(int s,int t){ T flow=0; while(true){ clr(iter); bfs(s); if(level[t] 0)return flow; T f; while( (f=dfs(s,t,INF)) eps){ flow+=f; } } return flow; } }; void _main(istream inp){ while(true){ int w,h; double _r,_k; inp h w _r _k ws; if(h==0)break; int r=_r*1000+0.5; int k=_k*1000+0.5; ll big=1LL 33; vector string a1; REP(i,h){ string u; inp u; a1.pb(u); } int s=w*h, t=w*h+1; cal_max_flow ll cmf; REP(x,h) REP(y,w){ int p=x*w+y; if(a1[x][y]== # ){ cmf.add_edge(s,p,r+big); cmf.add_edge(p,t,big); } else if(a1[x][y]== . ){ cmf.add_edge(s,p,big); cmf.add_edge(p,t,r+big); } else{ assert(false); } } REP(x1,h) REP(y1,w) REP(x2,h) REP(y2,w){ int p=x1*w+y1; int p2=x2*w+y2; if(abs(x1-x2)+abs(y1-y2)==1)cmf.add_edge(p,p2,k); } ll d=cmf.max_flow(s,t); d-=big*w*h; cmf.bfs(s); vector string a2(h, string(w, . )); REP(x,h) REP(y,w) if(cmf.level[x*w+y]!=-1)a2[x][y]= # ; cout 0.001*d endl; REP(i,a2.size()) cout a2[i] endl; } } int main(){ if(1){ ifstream ifs("test.txt"); _main(ifs); } else{ _main(cin); } return 0; }
https://w.atwiki.jp/satoschi/pages/7133.html
グーグ・イミディル語 |Australian languages| 言語類型 現用言語 使用文字 type living language writing system ISO 639-3 【kky】 言語名別称 alternate names Gugu Yimijir Gugu-Yimidhirr Guugu Yimidhirr Guugu Yimithirr Koko Imudji Kukuyimidir グウグ・イミディール語 方言名 dialect names 参考文献 references WEB ISO 639-3 Registration Authority - SIL International the LINGUIST List Ethnologue Wikipedia ウィキペディア
https://w.atwiki.jp/vst_prog/pages/74.html
トップページ MIDIメッセージ処理 MIDIメッセージにあわせて動作するVSTのサンプルである。 下記VSTはSynthとしてロードされ、常にノイズを発生させる。実行時は音量に注意してほしい。 ノイズのボリュームをMIDI CC7でコントロールできる。 サンプルコード全体 ソースコードのダウンロード→ここをクリック // ============================================================================================// インクルードファイル// ============================================================================================#include stdlib.h #include string.h #include "audioeffectx.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 0 //パラメータの数 // ============================================================================================// MIDI処理用の定義// ============================================================================================#define MIDIMSG_MAXNUM 255 struct MidiMessage{VstInt32 deltaFrames; //MIDIメッセージを処理するタイミングunsigned char message; //MIDIメッセージ番号unsigned char channel; //MIDIチャンネルunsigned char data1; //MIDIデータ1unsigned char data2; //MIDIデータ2}; // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyMidiSampleVST public AudioEffectX{protected int midimsgnum; //受け取ったMIDIメッセージの数MidiMessage midimsgbuf[MIDIMSG_MAXNUM]; //受け取ったMIDIメッセージを保管するバッファ // ノイズのボリュームfloat volume;public MyMidiSampleVST (audioMasterCallback audioMaster); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); // MIDIメッセージをホストアプリケーションから受け取るためのメンバー関数VstInt32 processEvents (VstEvents* events);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyMidiSampleVST (audioMaster);} MyMidiSampleVST MyMidiSampleVST (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (true); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 //上記の関数を呼び出した後に初期化を行うmidimsgnum = 0;memset(midimsgbuf, 0, sizeof(MidiMessage) * MIDIMSG_MAXNUM); volume = 1.0f;} void MyMidiSampleVST processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){//入力、出力は2次元配列で渡される。//入力は-1.0f~1.0fの間で渡される。//出力は-1.0f~1.0fの間で書き込む必要がある。//sampleFramesが処理するバッファのサイズfloat* outL = outputs[0]; //出力 左用float* outR = outputs[1]; //出力 右用 // midieventlistの読み込み位置int midimsg_cursol = 0; for (int i = 0; i sampleFrames; i++){//ここで音声処理を行う。 // MIDIメッセージがあるか確認if ( midimsgnum 0){// MIDIメッセージを処理するタイミングかどうかを確認する。if( midimsgbuf[midimsg_cursol].deltaFrames = i){// MIDIメッセージがコントロールチェンジのボリューム変更(CC7)であった場合if( midimsgbuf[midimsg_cursol].message == 0xB0 midimsgbuf[midimsg_cursol].data1 == 7){volume = (float)( midimsgbuf[midimsg_cursol].data2) / 127.0f;} // midimsgbufからMIDIメッセージを読み出したので// 読み込み位置を進め、MIDIメッセージの数を減らすmidimsgnum--;midimsg_cursol++;}} //出力バッファへ書き込む。outL[i] = volume * (float)((rand() % 256) -128) / 255.0f;outR[i] = volume * (float)((rand() % 256) -128) / 255.0f;}} // MIDIメッセージを処理するメンバー関数// processReplacing()の前に必ず1度だけ呼び出される。// VstInt32 MyMidiSampleVST processEvents (VstEvents* events){// MIDIのリストを初期化します。midimsgnum = 0;memset(midimsgbuf, 0, sizeof(MidiMessage) * MIDIMSG_MAXNUM); // VSTイベントの回数だけループをまわす。int loops = (events- numEvents);for (int i = 0;i loops; i++){// 与えられたイベントがMIDIならばmidimsgbufにストックするif ((events- events[i])- type == kVstMidiType){VstMidiEvent *midievent = (VstMidiEvent*)(events- events[i]); midimsgbuf[midimsgnum].deltaFrames = midievent- deltaFrames;midimsgbuf[midimsgnum].message = midievent- midiData[0] 0xF0; // MIDIメッセージmidimsgbuf[midimsgnum].channel = midievent- midiData[0] 0x0F; // MIDIチャンネルmidimsgbuf[midimsgnum].data1 = midievent- midiData[1]; // MIDIデータ1midimsgbuf[midimsgnum].data2 = midievent- midiData[2]; // MIDIデータ2midimsgnum++; // MIDIメッセージのバッファがいっぱいの場合はループを打ち切る。if (i = MIDIMSG_MAXNUM){break;}}} // 1を返しておくreturn 1;} VST Tipsトップページへ 同一カテゴリのTips 項目 No. 概要 MIDIメッセージ処理 No.1 MIDIメッセージ処理で最小構成の自作VSTに追加する変数・関数 No.2 VSTの初期化とMIDIメッセージ処理関連の変数の初期化 No.3 ホストアプリケーションからMIDIメッセージを受け取る方法 No.4 MIDIメッセージをprocessReplacing()関数中で処理する方法 No.5 MIDIメッセージ処理で作成したVSTのサンプルソースコード全体(暫定版)
https://w.atwiki.jp/xbox360score/pages/873.html
Lucidity 総項目 12 総ポイント 200 難易度 ★★☆☆☆ 製品情報 マーケットプレース(北米) 配信日 2009年10月7日 DL費用 800MSP ジャンル Action Adventure, Platformer, Puzzle Trivia ☆国内未配信 特に難しい実績は無いが、ほたる(fireflies)集めに手間がかかる。 First Steps Beat the first level of the game.最初の面をクリア。 5 Wonder Finish the first Act of the game.Act1が終了。 25 Fear Finish the second Act of the game.Act2が終了。 25 Courage Finish the third Act of the game.Act3が終了。 30 Firefly Collector Collect 100 fireflies.ほたるを100匹集める。 15 Firefly Enthusiast Collect 500 fireflies.ほたるを500匹集める。 15 Firefly Lover Collect 1000 fireflies.ほたるを1000匹集める。 15 Firefly Master Collect 1500 fireflies.ほたるを1500匹集める。 30 Cleaning Up Collect all fireflies in Every Kite Soars in a single run. Every Kite Soars で、一回ですべてのほたるを獲得する。 10 Shy of the Firefly Beat Deep Sleep Dive without collecting any fireflies. Deep Sleep Dive で、ほたるを一匹も獲得せずにクリア。 10 Mastering the Underground Complete all Bonus Levels.ボーナス面をすべてクリア。 10 Ouch Free Beat All Around is Petrified without taking any damage. All Around is Petrified で、ダメージを受けずにクリア。 10 Cleaning Up 高くて登れないブロックに主人公を引っかけておき、その間にあらかじめ道を作っておくと楽。 Act1では時間制限が無いため、慌てる必要はない。 Mastering the Underground ボーナス面は全16面。 最後のボーナス面を出現させるには、本編27面+ボーナス面15面のほたるをすべて集める必要がある。総数2111匹。 面内のほたるが残り15匹以下になると、最寄のほたるのありかを示す矢印が表示される。
https://w.atwiki.jp/vst_prog/pages/91.html
トップページ CMidiMsgクラスの実装 ここでは前項で定義したCMidiMsgクラスについて説明する。 CMidiMsgクラスの実装 CMidiMsgクラスではコンストラクタでclearMidiMsg()関数を呼び出し初期化している。 clearMidiMsg()関数はメンバー変数に初期値を代入している。終了処理はないため、デストラクタでは何もしていない。 CMidiMsg CMidiMsg(void){clearMidiMsg();} CMidiMsg ~CMidiMsg(void){} void CMidiMsg clearMidiMsg(){// メンバー変数を初期化するcur=0;num=0;memset(buf, 0, sizeof(MidiMessage)*MIDIMSG_MAXNUM);} CMidiMsgクラス addMidiMsg()関数 次にaddMidiMsg()関数について説明する。 メンバ関数 戻り値 引数 内容 addMidiMsg() int VstMidiEvent *midievent MIDIメッセージをMIDIバッファへの保存する関数。引数は受け取るMIDIメッセージ(VstMidiEvent型のポインタ)MIDIバッファへの追加に成功すると1、失敗すると0が返る。 この関数はVSTから受け取ったMIDIメッセージをMIDIバッファへ保存するための関数で、processEvents()関数内で、下記のように呼び出されることを想定している。 VstInt32 MyMidiSample2VST processEvents (VstEvents* events){// MIDIバッファを初期化。clearMidiMsg(); int loops = (events- numEvents); // VSTイベントの回数だけループをまわす。for (int i = 0;i loops; i++){// 与えられたイベントがMIDIならばMIDIバッファに追加する。if ((events- events[i])- type == kVstMidiType){VstMidiEvent *midievent = (VstMidiEvent*)(events- events[i]);if( !addMidiMsg(midievent) ){break;}}} // 1を返さなければならないreturn 1;} processEvents()関数内では、はじめにclearMidiMsg()関数でMIDIバッファ初期化している。 (clearMidiMsg()関数についてはコンストラクタの部分で説明したとおりである。) 次にVSTイベント(VstEvents* events)がいくつあるか確認し、VSTイベントの数だけ繰返し(for文)をおこない、VSTイベントがMIDIメッセージの場合にaddMidiMsg()関数を使用して、MIDIバッファへ保存している。 addMidiMsg()関数は下記のようにMIDIバッファに空きがあるかを確認し、空きがあればMIDIバッファに保管する。保管後は、MIDIバッファ内のMIDIメッセージ数を更新するようにしている。 また、VSTホストからMIDIメッセージを受け取る際はVstMidiEvent型で渡されることを想定し、簡単に処理できるようにaddMidiMsg()関数をオーバーロードしている。 int CMidiMsg addMidiMsg(VstMidiEvent *midievent){// VstMidiEventからMidiMessgeへデータをコピーするMidiMessage tmp;tmp.deltaFrames = midievent- deltaFrames;tmp.message = midievent- midiData[0] 0xF0;tmp.channel = midievent- midiData[0] 0x0F;tmp.data1 = midievent- midiData[1];tmp.data2 = midievent- midiData[2]; return addMidiMsg(tmp);} int CMidiMsg addMidiMsg(MidiMessage msg){// バッファがいっぱいなら0を返すif (num = MIDIMSG_MAXNUM)return 0; // バッファにMIDIメッセージを保存buf[num] = msg; // バッファに保存されているMIDIメッセージの数を増やす。num++;if (num MIDIMSG_MAXNUM) {num = MIDIMSG_MAXNUM;} return 1;} CMidiMsgクラス getMidiMsg()関数、getMidiMessageNum()関数、getNextDeltaFrames()関数 【作成中】 MIDIメッセージ処理用クラス定義 【作成中】 ここで作成するVSTサンプルのソースコード全体はここにある。 次へ 同一カテゴリのTips 項目 No. 概要 MIDIメッセージ処理 No.1 MIDIメッセージ処理で最小構成の自作VSTに追加する変数・関数 No.2 VSTの初期化とMIDIメッセージ処理関連の変数の初期化 No.3 ホストアプリケーションからMIDIメッセージを受け取る方法 No.4 MIDIメッセージをprocessReplacing()関数中で処理する方法 No.5 MIDIメッセージ処理で作成したVSTのサンプルソースコード全体(暫定版)